﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;

namespace TangoFamilyAndGuide.Site
{
    public partial class ExploradorPermisoAgregar : System.Web.UI.Page
    {
        List<Entidades.Permiso> permisos = new List<Entidades.Permiso>();

        protected void Page_Load(object sender, EventArgs e)
        {
            Entidades.Sesion sesion;
            if (!IsPostBack)
            {
                if (Funciones.SessionTimeOut(Session))
                {
                    Response.Redirect("~/SessionTimeout.aspx");
                }
                else
                {
                    sesion = (Entidades.Sesion)Session["Sesion"];
                    try
                    {
                        string a = "";
                        //a = HttpContext.Current.Request.Url.Query.ToString().Replace("?", String.Empty);
                        if (HttpContext.Current.Request.QueryString.Keys.Count > 0)
                        {
                            a = HttpContext.Current.Request.QueryString.Keys[0];
                        }
                        switch (a)
                        {
                            case "Id":
                                string b = HttpContext.Current.Request.QueryString["Id"];
                                IdUsuarioTextBox.Text = b;
                                break;
                        }
                        Entidades.Usuario usr = new Entidades.Usuario();
                        usr.Id = IdUsuarioTextBox.Text;
                        RN.Usuario.Leer(usr, sesion);
                    }
                    catch (Exception ex)
                    {
                        MensajeLabel.Text = EX.Funciones.Detalle(ex);
                        AgregarButton.Enabled = false;
                    }
                    IdTipoPermisoDropDownList.DataSource = RN.TipoPermiso.ListaSinTodos(true, sesion);
                    DataBind();
                    IdTipoPermisoDropDownList.SelectedValue = String.Empty;
                    ListarPermisosExistentes();
                }
            }
            sesion = (Entidades.Sesion)Session["Sesion"];
            List<Entidades.Permiso> permisoAdminSITEActive = sesion.Usuario.Permisos.FindAll(delegate(Entidades.Permiso p)
            {
                return p.TipoPermiso.Id == "AdminSITE";
            });
            if (permisoAdminSITEActive.Count == 0)
            {
                Response.Redirect("~/Home.aspx");
            }
        }
        private void ListarPermisosExistentes()
        {
            Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
            List<Entidades.Permiso> lista = new List<Entidades.Permiso>();
            MensajeLabel.Text = String.Empty;
            Entidades.Usuario usr = new Entidades.Usuario();
            usr.Id = IdUsuarioTextBox.Text;
            RN.Usuario.Leer(usr, sesion);
            lista = RN.Permiso.LeerListaPermisosPorUsuario(usr, sesion);
            if (lista.Count == 0)
            {
                PermisosGridView.DataSource = null;
                PermisosGridView.DataBind();
                MensajeLabel.Text = "No se han encontrado Permisos.";
            }
            else
            {
                PermisosGridView.DataSource = lista;
                PermisosGridView.DataBind();
            }
        }
        protected void PermisosGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int item = Convert.ToInt32(e.CommandArgument);
            List<Entidades.Permiso> lista = (List<Entidades.Permiso>)ViewState["Permisos"];
            Entidades.Permiso permiso = lista[item];
            switch (e.CommandName)
            {
                case "CambiarEstado":
                    //if (permiso.WF.Estado == "Active" || permiso.WF.Estado == "Canceled")
                    //{

                    //}
                    //else
                    //{
                    //    MensajeLabel.Text = "The change of status can only be used for cancellations or undo cancellations.";
                    //}
                    break;
            }
        }
        protected void PermisosGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (e.Row.Cells[2].Text != "Active")
                {
                    e.Row.ForeColor = Color.Red;
                }
            }
        }
        protected void AgregarConfirmacionButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                try
                {
                    Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                    Entidades.Permiso permiso = new Entidades.Permiso();
                    permiso.Usuario.Id = UsuarioLabel.Text;
                    permiso.TipoPermiso.Id = IdTipoPermisoLabel.Text;
                    permiso.FechaFinVigencia = Convert.ToDateTime(FechaFinVigenciaLabel.Text);
                    permiso.WF.Estado = EstadoLabel.Text;
                    RN.Permiso.AgregarPermiso(permiso, sesion);
                    ListarPermisosExistentes();
                }
                catch (Exception ex)
                {
                    MensajeLabel.Text = EX.Funciones.Detalle(ex);
                }
            }
        }
        protected void AgregarButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/SessionTimeout.aspx");
            }
            else
            {
                Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
                TituloConfirmacionLabel.Text = "Confirmar el Alta del Permiso";
                UsuarioLabel.Text = IdUsuarioTextBox.Text;
                IdTipoPermisoLabel.Text = IdTipoPermisoDropDownList.SelectedValue;
                EstadoLabel.Text = "Active";
                FechaFinVigenciaLabel.Text = "31/12/2062";
                UsuarioLabel.Text = IdUsuarioTextBox.Text;
                ModalPopupExtender1.Show();
            }
        }
    }
}